perm filename CBCL[E82,JMC] blob sn#672100 filedate 1982-08-06 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	CBCL - summer 1982
C00004 00003	New approach
C00007 00004	NEW APPROACH TO CBCL - August 1982
C00015 ENDMK
CāŠ—;
CBCL - summer 1982

1. We need better examples of CBCL communications.

2. How about the following style:  New entities, including offers
and objects, are introduced by first giving a proper name which
in itself says nothing and then giving sentences about it.  This
avoids some of the problems of saying how many or what slots
the description of the entity has.

Thus "I order 500 Number 2 pencils from you" may be expressed.

(introducing a7301) ; this may not really be necessary

(purchase-order a7301)

(equal (item a7301) a7302)

(equal (type a7302) pencil)

(equal (hardness a7302) 2)

(equal (quantity a7301) 500)

We suppose that this can be the complete purchase order message.
If so, then much information is determined by default.  Perhaps
if we had said  (purchase-order1 a7301),  it might be taken as
stated what information is determined by default or by previous
arrangement - for example, terms of payment and delivery.  If
we want to specify the delivery date, we might add

(delivery-date a7301 (before (date 1982 July 30))).


New approach

	We concentrate at first on very simple messages.

(a795 (Your-stock-number "AB47258") 100)

is an order to buy 100 of the recipient's stock number  AB47258
at current prices.  a795  refers to a standard order protocol.
It assumes that the price is not unreasonably increased.  Thus
if an item costing $1.00 suddenly had its price raised to  $10.00,
the buyer would probably win a lawsuit when he refused to pay.
The point is that much commerce is conducted this way.

(a794 (Your-stock-number "AB47258") 100)

is a request for a quotation for 100 of that item.

(delivery-before <date> <transaction>)

is a modified transaction.

(a795 (delivery-before (date 1983 january 10) (Your-stock-number "AB47258") 100)

is an order to buy 100 of the item with delivery before that date.

Perhaps it would be better to consider (quantity <item> <number>) as
a modifier and write

(a795 (delivery-before (date 1983 january 10)
		       (quantity (Your-stock-number "AB47258") 100)))

In this way, even the quantity could be defaulted if that were
appropriate.

(signed-message
 (order-department "abc-corporation" 27)
 (a795 (delivery-before (date 1983 january 10)
			(quantity (Your-stock-number "AB47258") 100)))
 (purchasing-agent "xyz-corporation" 731))

NEW APPROACH TO CBCL - August 1982

	Here is a simple complete CBCL message:

(signed-message
 (order-department "abc-corporation" 27)
 (a795 (Your-stock-number "AB47258"))
 (purchasing-agent "xyz-corporation" 731))

It is based on the following conventions:

	1. (signed-message <recipient> <message> <signer>) 
means that the message <message>> is addressed to <recipient>
by <signer>.  Here <recipient> is program 27 of the order department
of abc corporation.  <signer> is purchasing program 731 of xyz
corporation.  The message has a digital signature that allows the
receiver to verify that it really came from purchasing program 731.
These digital signatures are based on public key cryptosystems as
originally proposed by Diffie and Hellman  (197x).

	2. (a795 <item>) is a particular kind of purchase order
for item.  It is a matter of record that (purchasing-agent "xyz-corporation 731)
is authorized to issue purchase orders of type a795.  This fact
may be on file with abc-corporation or the program may have to
verify it by sending an inquiry to the program belonging to
xyz corporation that is listed in a public directory as answering such
inquiries.  xyz corporation will have signed a protocol binding
it to the legal consequences of electronically signed purchase
orders.

	3. (Your-stock-number <designation>) is only one of
many ways of designating an item.  Another is  pencil  if one
is buying pencils.  Of course, the noun pencil will have to be
modified, but see below.

	4. Note that nothing is said about quantity, price or delivery
in this example.  (a795 <item>) has defaults for these.  The standard
quantity would be one or would be determined by the stock number.  The
standard price would be that current at the time of order.  The
delivery would be the customary method for that item with the
customary permissible delay.  (a795 <item>) refers to a standard
commercial contract.  It is up to the program in the order
department to decide whether it accepts such orders.

	5. When additional information is to be given, it is
expressed by modifiers.  These take the form

(<modifier> <modification> <expression-to-be-modified>).

Consider the more elaborate message

(signed-message
 (order-department "abc-corporation" 27)
 (a795 (delivery-before (date 1983 january 10)
			(quantity (Your-stock-number "AB47258") (number 100))))
 (purchasing-agent "xyz-corporation" 731)).

We have the conventions

	6. (quantity <item> <quantity>) denotes <quantity>
of the item.  In this example, <quantity> is a number, but it
might be expressed in pounds as in (pounds 20) instead of (number 100).

	7. (delivery-before <date> <item>) means that the item is
to be delivered before the designated date.

	We propose using modifiers surrounding the an argument for
obtaining results for which defaultable arguments in the original
function are ordinarily used in LISP.  Default arguments are clumsy
and lead to unpleasant elaboration.  Modifiers have the advantage
that more can be added at any time.  Moreover, they correspond to
what we were taught in grade school - that adjectives modify the
meanings of nouns and adverbs modify the meanings of verbs.

	8. (numbered-message <message> <number>) modifies a message
by attaching a number that can be referred to in subsequent
communications.

	9. Ordinary adjectives are represented as modifiers.  Thus

	(red (Your-stock-number "AB47258"))

specifies that the item is red.  Further adjectives are applied by
composition as in

	(large (red (Your-stock-number "AB47258"))).

Of course, this syntax might be sugared in various ways, but remember
that it is intended for computers talking to computers, so sugaring
may be unnecessary, and, in any case, sugaring for computers would be
different from sugaring for humans.  In particular, if the sugaring
has to be expanded, it's probably pointless in computer-computer
communication.  The pencil example may come out

	(red ((with red lead) ((pencil-hardness 2) pencil)))

designating a pencil colored red with red lead and No. 2 in hardness.
If we said  hardness  instead of  pencil-hardness,  the programs would
have to know that  hardness  applied to pencils differs from hardness
applied to some other objects.  This wouldn't be difficult, and the
ability will certainly be required.

	10. Adjectives themslves may be modified as in

	(large ((bright red) (Your-stock-number "AB47258"))).